#!/usr/bin/env python3
"""
f-string 使用示例
Python 3.6+ 支持
"""

def demonstrate_f_strings():
    """演示f-string的各种用法"""
    
    # 1. 基本用法
    name = "张三"
    age = 25
    print(f"1. 基本用法: 我叫{name}，今年{age}岁")
    
    # 2. 数学表达式
    x, y = 10, 20
    print(f"2. 数学表达式: {x} + {y} = {x + y}")
    print(f"   平方根: √{x} = {x ** 0.5:.2f}")
    
    # 3. 条件表达式
    score = 85
    print(f"3. 条件表达式: 成绩{score}分，等级: {'优秀' if score >= 90 else '良好' if score >= 80 else '及格'}")
    
    # 4. 格式化数字
    pi = 3.14159265359
    print(f"4. 数字格式化: π = {pi:.4f}")
    print(f"   百分比: {0.1234:.1%}")
    
    # 5. 调试表达式 (Python 3.8+)
    value = 42
    print(f"5. 调试表达式: {value=}")
    print(f"   计算: {value * 2=}")
    
    # 6. 列表和字典
    fruits = ["苹果", "香蕉", "橙子"]
    person = {"name": "李四", "city": "北京"}
    print(f"6. 数据结构: 水果列表{fruits}，长度{len(fruits)}")
    print(f"   个人信息: {person['name']}来自{person['city']}")
    
    # 7. 函数调用
    def get_greeting(name):
        return f"你好，{name}！"
    
    print(f"7. 函数调用: {get_greeting('王五')}")
    
    # 8. 多行f-string (Python 3.12+)
    user_info = {
        "name": "赵六",
        "age": 30,
        "email": "zhaoliu@example.com"
    }
    
    profile = f"""
8. 多行f-string:
   姓名: {user_info['name']}
   年龄: {user_info['age']}
   邮箱: {user_info['email']}
   状态: {'活跃' if user_info['age'] < 60 else '退休'}
"""
    print(profile)
    
    # 9. 转义字符
    print(f"9. 转义: 显示大括号: {{这是大括号}}")
    print(f"   引号: 他说\"我叫{name}\"")

def performance_comparison():
    """性能对比：f-string vs 其他字符串格式化方法"""
    name = "测试用户"
    age = 25
    
    # f-string (推荐)
    result1 = f"姓名: {name}, 年龄: {age}"
    
    # .format() 方法
    result2 = "姓名: {}, 年龄: {}".format(name, age)
    
    # % 操作符 (旧式)
    result3 = "姓名: %s, 年龄: %d" % (name, age)
    
    print("性能对比:")
    print(f"f-string: {result1}")
    print(f".format(): {result2}")
    print(f"%操作符: {result3}")

if __name__ == "__main__":
    print("=" * 50)
    print("Python f-string 使用示例")
    print("=" * 50)
    
    demonstrate_f_strings()
    print("\n" + "=" * 50)
    performance_comparison()
    print("=" * 50) 